package com.applet.system.service;

import java.util.List;


import com.applet.system.entity.User;
import com.applet.system.entity.dto.UserDto;
import com.applet.system.utils.Md5Utils;

public interface UserService {
	
	/**
	 * 根据用户名/密码查询未逻辑删除的用户信息
	 * @param user
	 * @return
	 */
	User getUserByPassword(User user);
	
	/**
	 * 修改个人信息
	 * @param user
	 * @return
	 */
	void updateSelfInformation(User user);
	
	/**
	 * 修改个人密码
	 * @param user
	 * @return
	 */
	int updateSelfPassword(UserDto user);
	
	default String salt(String userName, String password){
		return Md5Utils.encode(password.concat(userName)).toLowerCase();
	}
	
	/**
	 * 获取角色是否有用户绑定
	 * @param roleId
	 * @return
	 */
	boolean getRoleIsUsed(Long roleId);
	
	/**
	 * 根据角色id获取所有相关的用户id集合
	 * @param roleId
	 * @return
	 */
	List<Long> getUserIdsByRoleId(Long roleId);
	
	/**
	 * 分页查询
	 * @param user
	 * @return
	 */
	List<UserDto> getPage(UserDto user);
	
	/**
	 * 修改用户状态
	 * @return
	 */
	void updateUserStatus(User user);
	
	/**
	 * 重置密码
	 * @param id
	 * @param pwd
	 */
	void resetPwd(User user);
	
	/**
	 * 插入用户
	 * @param user
	 */
	void insert(User user);
	
	/**
	 * 配置角色
	 * @param user
	 */
	void settingRoles(UserDto user);
	
	/**
	 * 获取用户角色id集合
	 * @param userId
	 * @return
	 */
	List<Long> getUserRoleIds(Long userId);
}
